// model包定义了核心业务模型
package model

import (
	"context"
)

// SignupRequest 注册请求参数结构体
// 定义用户注册API所需的请求参数
type SignupRequest struct {
	Name     string `form:"name" binding:"required"`        // 用户姓名, 必填
	Email    string `form:"email" binding:"required,email"` // 用户邮箱, 必填且必须是有效的邮箱格式
	Password string `form:"password" binding:"required"`    // 用户密码, 必填
}

// SignupResponse 注册响应结构体
// 定义用户注册成功后的返回数据
type SignupResponse struct {
	AccessToken  string `json:"accessToken"`  // 访问令牌, 用于后续API访问认证
	RefreshToken string `json:"refreshToken"` // 刷新令牌, 用于在访问令牌过期后获取新令牌
}

// SignupService 注册用例接口
// 定义了处理用户注册逻辑的业务方法
type SignupService interface {
	// Create 创建新用户
	Create(c context.Context, user *User) error
	// GetUserByEmail 通过邮箱获取用户信息, 用于检查邮箱是否已被注册
	GetUserByEmail(c context.Context, email string) (User, error)
	// CreateAccessToken 创建访问令牌
	CreateAccessToken(user *User, secret string, expiry int) (accessToken string, err error)
	// CreateRefreshToken 创建刷新令牌
	CreateRefreshToken(user *User, secret string, expiry int) (refreshToken string, err error)
}
